package com.palpiteiro.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.palpiteiro.bean.IBean;
import com.palpiteiro.bean.Usuario;

public class UsuarioDAO extends IDAO{

	@Override
	protected String getUser(){ return "usuario"; }

	@Override
	public ResultSet select(IBean bean) throws SQLException{

		Usuario usuario = (Usuario) bean;
		String sql = "";
		PreparedStatement stmt;
		if(usuario.getId_usuario() <= 0){
			sql = "select id_usuario,nome,cpf,email,senha,valorInicial,valorAtual,estrategia"
					+ " from \"Usuario\".\"Usuario\"" + " where email = ? and senha = ?;";
			
			stmt = getConn().prepareStatement(sql);
			stmt.setString(1, usuario.getEmail());
			stmt.setString(2, usuario.getSenha());
		}else{
			sql = "select id_usuario,nome,cpf,email,senha,valorInicial,valorAtual,estrategia"
					+ " from \"Usuario\".\"Usuario\"" + " where id_usuario = ?;";
			
			stmt = getConn().prepareStatement(sql);
			stmt.setInt(1, usuario.getId_usuario());
		}
		ResultSet rs = stmt.executeQuery();
		
		return rs;
	}
	
	@Override
	public void insert(IBean bean) throws SQLException{

		Usuario usuario = (Usuario) bean;
		String sql = "";
		
		sql = "insert into \"Usuario\".\"Usuario\" " + 
						"(nome,cpf,email,senha,valorInicial,valorAtual)" + 
						" values(?,?,?,?,?,?)";

		PreparedStatement stmt = getConn().prepareStatement(sql);
		
		stmt.setString(1, usuario.getNome());
		stmt.setString(2, usuario.getCpf());
		stmt.setString(3, usuario.getEmail());
		stmt.setString(4, usuario.getSenha());
		stmt.setDouble(5, usuario.getValorInicial());
		stmt.setDouble(6, usuario.getValorAtual());

		stmt.executeUpdate();
		
		closeConn();
	}

	@Override
	public void update(IBean bean) throws SQLException{

		Usuario usuario = (Usuario) bean;
		
		String sql = "";
		sql = "update \"Usuario\".\"Usuario\" set " +
							"nome=?,email=?,senha=?,valorInicial=?,valorAtual=?" + 
							" where id_usuario = ?;";
		
		PreparedStatement stmt = getConn().prepareStatement(sql);
		
		stmt.setString(1, usuario.getNome());
		stmt.setString(2, usuario.getEmail());
		stmt.setString(3, usuario.getSenha());
		stmt.setDouble(4, usuario.getValorInicial());
		stmt.setDouble(5, usuario.getValorAtual());
		stmt.setInt(6, usuario.getId_usuario());
		
		stmt.executeUpdate();
	
		closeConn();
	}
}
